// 定义变换函数：
// 将一个正整数x用其二进制表示中1的个数替换，记作g(x）（即popcount）;
// 给定两个长度均为n的正整数数组A和B;
// 你可以对A或B中的任意元素反复执行以下操作，每次操作计数1：
// 将该元素 x 替换为g(x);
// 当且仅当存在置换 π，使得对所有1<=i<=n 都有 Ai=Bπ(i)，也就是两个数组都排序后完
// 全相同，我们称A与B同构。请计算使A与B同构所需的最少操作次数。

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

const getMinSameStructureAction = function (arrayA = [], arrayB = []) {};

void (async function () {
  const epoch = parseInt(await readline());
  for (let i = 0; i < epoch; i++) {
    // 弃用数组长度
    await readline();
    // 读取数组
    let arrayStr = await readline();
    const arrayA = arrayStr.split(" ").map((str) => parseInt(str));
    arrayStr = await readline();
    const arrayB = arrayStr.split(" ").map((str) => parseInt(str));
    const minTime = getMinSameStructureAction(arrayA, arrayB);
    console.log(minTime);
  }
})();
